import request from '@/utils/request'

// ==================== 认证相关接口 ====================

// 用户登录
export function login(data) {
  return request({
    url: '/api/user/login',
    method: 'post',
    data
  })
}

// 用户注册
export function register(data) {
  return request({
    url: '/api/user/register',
    method: 'post',
    data
  })
}

// 获取当前用户信息
export function getUserProfile() {
  return request({
    url: '/api/user/profile',
    method: 'get'
  })
}

// ==================== 用户管理接口 ====================

/**
 * 获取用户列表（支持分页、搜索、筛选）
 * @param {Object} params - 查询参数
 * @param {number} params.pageNumber - 页码，默认1
 * @param {number} params.pageSize - 每页数量，默认10
 * @param {string} params.keyword - 关键词搜索(用户名/手机/邮箱)
 * @param {number} params.status - 用户状态(0=禁用,1=启用,2=锁定)
 * @param {number} params.gender - 性别(0=未知,1=男,2=女)
 * @param {number} params.level - 用户等级
 * @param {string} params.startDate - 注册开始时间
 * @param {string} params.endDate - 注册结束时间
 * @param {string} params.sortBy - 排序字段(username/registertime)，默认registertime
 * @param {boolean} params.sortDesc - 是否降序，默认true
 * @returns {Promise} 返回用户列表数据
 */
export function getUserList(params) {
  return request({
    url: '/api/user/list',
    method: 'post',  // 改为POST方法
    data: params     // 使用data而不是params
  })
}

// 获取用户详情 (根据ID)
export function getUserDetail(id) {
  return request({
    url: `/api/user/${id}`,
    method: 'get'
  })
}

// 新增用户
export function createUser(data) {
  return request({
    url: '/api/user/create',  // 修改URL
    method: 'post',
    data
  })
}

// 更新用户信息
export function updateUser(id, data) {
  return request({
    url: `/api/user/${id}`,
    method: 'put',
    data
  })
}

// 删除用户 (软删除)
export function deleteUser(id) {
  return request({
    url: `/api/user/${id}`,
    method: 'delete'
  })
}

// 批量删除用户
export function batchDeleteUsers(ids) {
  return request({
    url: '/api/user/batch-delete',
    method: 'post',
    data: { ids }
  })
}

// 启用/禁用用户
export function toggleUserStatus(id, status) {
  return request({
    url: `/api/user/${id}/status`,
    method: 'patch',
    data: { status }
  })
}

// 获取角色列表
// 获取角色列表
export function getRoleList() {
  return request({
    url: '/api/role/list',
    method: 'get'
  })
}

// 分配用户角色
export function assignUserRoles(userId, roleIds) {
  return request({
    url: '/api/user/assign-roles',
    method: 'post',
    data: {
      userId,
      roleIds
    }
  })
}

// 获取用户的角色列表
export function getUserRoles(userId) {
  return request({
    url: `/api/user/roles/${userId}`,
    method: 'get'
  })
}

// ==================== 密码管理接口 ====================

/**
 * 用户更改密码
 * @param {Object} data - 密码数据
 * @param {string} data.oldPassword - 旧密码
 * @param {string} data.newPassword - 新密码
 * @param {string} data.confirmPassword - 确认新密码
 * @returns {Promise} 返回密码修改结果
 * 
 * 响应状态码：
 * - 200 OK: "密码修改成功"
 * - 400 Bad Request: "密码修改失败"
 * - 401 Unauthorized: "无效的用户信息"
 * - 500 Internal Server Error: 具体错误信息
 */
export function changePassword(data) {
  return request({
    url: '/api/user/change-password',
    method: 'post',
    data: {
      oldPassword: data.oldPassword,
      newPassword: data.newPassword,
      confirmPassword: data.confirmPassword
    }
  })
}

/**
 * 重置用户密码（管理员功能）
 * @param {string} userId - 用户ID
 * @param {string} newPassword - 新密码
 * @returns {Promise} 返回密码重置结果
 */
export function resetUserPassword(userId, newPassword) {
  return request({
    url: '/api/user/reset-password',
    method: 'post',
    data: {
      userId,
      newPassword
    }
  })
}


/**
 * 刷新用户Token
 * @returns {Promise} 返回新的token信息
 */
export function refreshToken() {
  return request({
    url: '/api/user/refresh-token',
    method: 'post'
  })
}